<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let arr = ["one","two","three","four"];

        // Array Iterator  迭代器 数组
        // 凡是可以被for of 遍历的对象 都是迭代器对象。
        // Iterator 有内置的迭代方法
        // console.log(arr.keys());  //[0,1,2,3]

        console.log(arr.values()); //["one","two","three","four"]

        let arr2 = arr.values();

        console.log(arr2.next());
        // {value: 'one', done: false}
        console.log(arr2.next());
        // {value: 'two', done: false}
        console.log(arr2.next());
        // {value: 'three', done: false}
        console.log(arr2.next());
        //{value: 'four', done: false}
        console.log(arr2.next());
        //{value: undefined, done: true}

        // entries()`，`keys()`和`values()`

        // 数组循环遍历
        // for(let key of arr){
        //     console.log(key);
        // };

        // 我只想循环遍历 下标 - 键名
        // arr.keys() 拿到数组的键名（下标）
        // for(let key of arr.keys()){
        //     console.log(key);
        // }

        // arr.values() 拿到数组的键值
        // for(let val of arr.values()){
        //     console.log(val);
        // }

        // 既想拿到键名又想拿到键值
        //  for(let val of arr.entries()){
        //     console.log(val);//[0, 'one']
        // }


        // for(let [index,val] of arr.entries()){
        //     console.log(index);
        //     console.log(val);
        // }

        

    </script>
</body>
</html>